Wire matrix printers employ a set of print wires which are located in a printhead which is mounted on a carriage which moves the printhead back and forth across a platen on which rests the paper on which the characters and images are to be printed. An individual actuator coil is provided for each print wire. Energizing of an actuator coil by an electrical pulse fires the associated print wire. In particular, this causes the print wire to move forward rapidly and drive the printing ribbon against the paper to print a dot on the paper. The printing ribbon is located between the printing end of the printhead and the paper. Each of the various alphabetical, numerical and other printed characters is formed by printing a pattern of dots which create the shape of the character on the paper.
In order to form the printed characters on the paper, it is necessary to correlate the firings of the print wires with the location or position of the printhead along its path of travel as it moves across the paper. This is accomplished by providing a mechanism which generates a series of position marker pulses as the printhead moves across the paper A position marker pulse is generated each time the printhead moves a fixed incremental distance. The position of the printhead can be continuously monitored by counting these marker pulses.
These position marker pulses are sometimes referred to as "emitter" pulses or "emitter" signals and the mechanism which produces them is sometimes referred to as an "emitter" mechanism. This "emitter" terminology will be used in the present specification and claims. Also, the term "emitter" will be used as a unit of distance measurement. In this case, one emitter unit represents the distance the printhead will move between the generation of the leading edge of one emitter signal and the generation of the leading edge of the next emitter signal. It represents the physical distance corresponding to the spacing between the beginnings of two successive emitter signals. The value of an emitter unit is a fixed constant for any given printer and is usually relatively small, typically on the order of a few thousandths of an inch.
There are two primary types of emitter mechanisms, namely, a linear emitter mechanism and a rotary emitter mechanism. The linear emitter mechanism includes a stationary linear element which is attached to the printer frame and which extends the length of the platen. The linear element has uniformly spaced indicia on it which are sensed by a detector element which is carried on the printhead carriage. A rotary emitter mechanism, on the other hand, includes a rotary encoder type device having a movable element which is coupled to the drive system for the printhead carriage so that it will rotate as the printhead moves across the platen. Rotation of the movable element generates emitter signals. In either case, linear or rotary, a new emitter signal is produced each time the printhead moves a fixed incremental distance across the paper.
Various forms of wire fire control systems have been heretofore used to indicate when the print wires should be fired. The most common technique for generating the wire fire timing is to simply fire the appropriate print wires whenever an emitter pulse occurs. In the case of bidirectional printing, a time delay is added following the occurrence of the emitter pulses when moving in one of the directions to enable dots produced with the printhead moving in opposite directions to align vertically with one another. A more sophisticated technique that has been proposed is to use timing circuitry to generate pseudo-emitter pulses (usually two or three between the leading edges of the actual emitter pulses. This provides more times at which print wires may be fired and thereby provides somewhat better resolution. A problem with these known and proposed methods is that the character fonts or character styles which can be printed must be compatible with the emitter pulse spacing. This limits the choices for various font parameters such as dot density, characters per inch, and the like.
Another factor that needs to be taken into account in a wire matrix printer is the flight time of the print wire. A finite time, on the order of a few hundred microseconds, is required to get the print wire moving and to move it the necessary distance to strike the ribbon against the paper. This causes a problem because the printhead is also moving across the paper while the print wire is in flight. Thus, by the time the print wire strikes the paper, the print wire is no longer in the same position across the paper as it was when the firing of the print wire was commenced. The printhead may have moved anywhere from two or three or more emitter positions while the print wire was in flight. If not taken into account properly, this flight time factor can cause the different printed dots to be unevenly spaced relative to what is desired.
A common method of handling the print wire flight time is to print only when the printhead is moving at a known constant speed. In this case, the effect of the print wire flight time is the same for all of the printed dots. Consequently, there is no distortion or unevenness in the printed text or image. Also, for the case of bidirectional printing where some characters are printed with the printhead moving from left to right and other characters are printed with the printhead moving from right to left, proper alignment for the two directions can be maintained by adding a fixed time delay when printing in one of the two directions.
It is desirable to be able to print at a variety of different constant speeds. For one thing, this enables different character fonts to each be printed at its own maximum printhead speed, such maximum speed being a function of the dot density. It is also desirable to be able to print at non-constant printhead speeds. In other words, it is desirable to be able to print while the printhead is accelerating or decelerating. For one thing, this enables a reduction of the overall width of the printing apparatus because the side areas of the printer need not be wide enough to enable the printhead to get up to a constant speed before entering the printing region. For another thing, it enables changing printhead speeds and hence character fonts in the middle of a line of printing.
Accurate dot placement cannot be obtained at different speeds or when the printhead is accelerating or decelerating, unless a mechanism is provided for compensating for the print wire flight time and for changing the amount of compensation as a function of printhead speed. This is because the distance the printhead moves while the print wire is in flight is a function of the speed of the printhead. This distance will be different for different printhead speeds. As far as is known, no generally acceptable mechanism has been heretofore proposed for providing accurate dot placement for a relatively wide range of printhead speeds.
Accurate dot placement is of critical importance when doing color printing or when printing graphic images. For color printing, intermediate colors are obtained by overprinting the same dot positions with different colors on different passes of the printhead. When printing graphic images, different portions of an overall image may appear on different print lines, thus requiring good vertical alignment from print line to print line.